////////////////////////////////////////////////////////////////////////////////
//
// CTTS_WordInfo CLASS Header file.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef __CTTS_WORD_INFO_H__
#define __CTTS_WORD_INFO_H__

#include "TTS_PhonemeInfo.h"
#include "TTS_stdPackage.h"

#include <vector>
using std::vector;

class CTTS_WordInfo
{
protected:
	string Word;		// the word
	int	StartTime;		// time (ms) when the word occurs in the utterance.

public:
	vector <CTTS_PhonemeInfo> PhonemeList;

	CTTS_WordInfo ()
		{
			Word="x";
			StartTime = 0;
		};

	CTTS_WordInfo (string &NewWord)
		{
		CTTS_WordInfo (NewWord, 0);
		};

	CTTS_WordInfo (string &NewWord, int Start)
		{
		Word = NewWord;
		StartTime = Start;
		};

	inline string GetWord ();
	inline void SetWord (string &NewWord);
	inline int GetStartTime ();
	inline void SetStartTime (int Start);

	void PrintWordInfo ();

	void AddPhoneme (string &phoneme, int duration);

	void OutputMbrolaWords (ofstream &MBRFile);
	void OutputMbrolaWords (string &MBROLA_Utterance);
	void OutputGSTWords (ofstream &GSTFile);

	void Copy (CTTS_WordInfo &Src);
};

////////////////////////////////////////////////////////////////////////////////
// INLINE Functions
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// SetWord
//
////////////////////////////////////////////////////////////////////////////////
inline void CTTS_WordInfo::SetWord (string &NewWord)
{
	Word = NewWord;
}

////////////////////////////////////////////////////////////////////////////////
// GetWord
//
////////////////////////////////////////////////////////////////////////////////
inline string CTTS_WordInfo::GetWord ()
{
	return Word;
}

////////////////////////////////////////////////////////////////////////////////
// GetStartTime
//
////////////////////////////////////////////////////////////////////////////////
inline int CTTS_WordInfo::GetStartTime ()
{
	return StartTime;
}

////////////////////////////////////////////////////////////////////////////////
// SetStartTime
//
////////////////////////////////////////////////////////////////////////////////
inline void CTTS_WordInfo::SetStartTime (int Start)
{
	if (Start >= 0)
		StartTime = Start;
}

#endif